# 二进制文件重建脚本
import os
import shutil
import re

# 文件路径
original_file = r'd:\未知\yolo_apply\video_processing\video_processor.py'
backup_file = r'd:\未知\yolo_apply\video_processing\video_processor.py.backup'

# 确保我们使用干净的备份
if os.path.exists(backup_file):
    print(f"使用备份文件: {backup_file}")
    
    # 二进制模式读取文件内容
    with open(backup_file, 'rb') as f:
        content = f.read()
    
    # 转换为字符串并处理
    try:
        # 尝试多种编码解码
        try:
            text_content = content.decode('utf-8')
        except UnicodeDecodeError:
            text_content = content.decode('utf-8-sig')
        except UnicodeDecodeError:
            text_content = content.decode('latin-1')
        
        # 清理换行符，统一使用Unix风格
        text_content = re.sub(r'\r\n', '\n', text_content)
        
        # 查找并移除问题区域
        # 使用更宽松的正则表达式来确保捕获整个问题区域
        pattern = r'# 错误率过高时触发警告和恢复.*?error_count\s*=\s*0[^\n]*\n'
        
        # 使用DOTALL模式让.匹配换行符
        clean_content, count = re.subn(pattern, '# 错误率过高时触发警告和恢复\n', text_content, flags=re.DOTALL)
        
        print(f"已移除{count}个问题区域")
        
        # 二进制模式写入干净的内容
        with open(original_file, 'wb') as f:
            f.write(clean_content.encode('utf-8'))
            
        print(f"已用干净的二进制内容重建文件: {original_file}")
        
    except Exception as e:
        print(f"处理文件时出错: {str(e)}")
        
        # 最后手段：直接复制备份文件，但使用二进制模式
        shutil.copy2(backup_file, original_file)
        print(f"已直接复制备份文件到原位置")

print("现在让我们再次尝试编译...")